package com.manjusaka.create6.factory3;

/**
 * 简单工厂模式，*******根据传入的参数不同来创建不同的类*********
 * Created by manjusaka on 2017/6/30.
 *
 * 简单工厂模式会产生的问题：
 * 举个例子：
 * 这个类中有柱状图和饼状图两个类，如果需要在里面加一个扇形图的话，需要这么做
 * 1：创建一个扇形图的类，实现Chart图表类的接口
 * 2：修改SimpleFactory类，在里面添加这个类的参数
 * 产生的后果是会改变原来的代码，违反了设计模式的开闭原则
 */
public class SimpleFactory {
    public static Chart getChart(int flag) {
        switch (flag) {
            case 1:
                return new PieChart();
            case 2:
                return new HistogramChart();
            default:
                return new PieChart();
        }
    }
}

/**
 * 图标类的借口
 */
interface Chart {
    void disPlay();
}

class PieChart implements Chart {
    PieChart() {
    }

    //显示图标的代码
    public void disPlay() {
        System.out.println("PieChart--disPlay");
    }
}

class HistogramChart implements Chart {
    HistogramChart() {
    }

    //显示图标的代码
    public void disPlay() {
        System.out.println("HistogramChart--disPlay");
    }
}

class Test {
    public static void main(String[] args) {
        Chart chart = SimpleFactory.getChart(2);
        chart.disPlay();
    }
}
